package com.naiterui.ehp.bs.doctor.vo;

import java.io.Serializable;
import java.util.Arrays;
import java.util.List;

import com.naiterui.ehp.bp.utils.lang.ConfigUtil;
import com.naiterui.ehp.bs.doctor.vo.medicine.MedicineCustomCycleUnitVO;
import com.naiterui.ehp.bs.doctor.vo.medicine.MedicineCustomDataUnitVO;
import com.naiterui.ehp.bs.doctor.vo.medicine.MedicineCycleUnitVO;
import com.naiterui.ehp.bs.doctor.vo.medicine.MedicineCycleVO;
import com.naiterui.ehp.bs.doctor.vo.medicine.MedicineDateAndMethodVO;
import com.naiterui.ehp.bs.doctor.vo.medicine.MedicineDateUnitVO;
import com.naiterui.ehp.bs.doctor.vo.medicine.MedicineDosageVO;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 医生全局配置VO

 * @since 2.5.0
 */
@ApiModel(value = "GloableConfigVo", description = "医生全局配置VO")
public class GloableConfigVo implements Serializable {

    /**
     * 字段或域定义：<code>serialVersionUID</code>
     */
    private static final long serialVersionUID = -4580547428803297119L;

    /**
     * 客服电话：<code>customerServPhone</code>
     */
    @ApiModelProperty(value = "客服电话")
    private String customerServPhone;
    /**
     * 服药时间：<code>medicineEatTime</code>
     */
    @ApiModelProperty(value = "服药时间")
    private String medicineEatTime;
    /**
     * 购药单位：<code>medicineUnit</code>
     */
    @ApiModelProperty(value = "购药单位")
    private String medicineUnit;
    /**
     * 药品用法：<code>medicineDirection</code>
     */
    @ApiModelProperty(value = "药品用法")
    private String medicineDirection;
    /**
     * 医生勿扰提示语：<code>distrubList</code>
     */
    @ApiModelProperty(value = "医生勿扰提示语")
    private List<String> distrubList;
    /**
     * app分享主题：<code>appSpreadTitle</code>
     */
    @ApiModelProperty(value = "app分享主题")
    private String appSpreadTitle;
    /**
     * app分享医生内容：<code>appSpreadDrContent</code>
     */
    @ApiModelProperty(value = "app分享医生内容")
    private String appSpreadDrContent;
    /**
     * app分享患者内容：<code>appSpreadPtContent</code>
     */
    @ApiModelProperty(value = "app分享患者内容")
    private String appSpreadPtContent;
    /**
     * 互联网医院客服时间：<code>serverTime</code>
     */
    @ApiModelProperty(value = "互联网医院客服时间")
    private String serverTime;
    /**
     * 患者账号禁用内容：<code>ptDisabledContent</code>
     */
    @ApiModelProperty(value = "患者账号禁用内容")
    private String ptDisabledContent;

    /**
     * 图文咨询默认价格列表(单位分)
     */
    @ApiModelProperty(value = "图文咨询默认价格列表(单位分)")
    private List<Integer> consultChargeList;

    @ApiModelProperty(value = "用量日期单位对应天数")
    private List<MedicineDateUnitVO> medicineDateUnitList;

    @ApiModelProperty(value = "用量列表")
    private List<MedicineDosageVO> medicineDosageList;

    @ApiModelProperty(value = "自定义用量时的日期单位列表")
    private List<MedicineCustomDataUnitVO> medicineCustomDataUnitList;

    @ApiModelProperty(value = "药品单位列表")
    private List<String> medicineUnitList;

    @ApiModelProperty(value = "服用时间和方式列表:选择服用时间和方式的时的列表")
    private List<MedicineDateAndMethodVO> medicineDateAndMethodList;

    @ApiModelProperty(value = "服用时间列表:自定义选择的那个下拉列表")
    private List<String> medicineTakeDateList;

    @ApiModelProperty(value = "服用方式列表:自定义选择的那个下拉列表")
    private List<String> medicineTakeMethodList;

    @ApiModelProperty(value = "用药周期单位对应天数")
    private List<MedicineCycleUnitVO> medicineCycleDateUnitList;

    @ApiModelProperty(value = "用药周期列表")
    private List<MedicineCycleVO> medicineCycleList;

    @ApiModelProperty(value = "自定义用药周期单位列表")
    private List<MedicineCustomCycleUnitVO> medicineCustomCycleUnitList;

    @ApiModelProperty(value = "常用输入")
    private List<RecordPastVO> pastList;

    /**
     * 前段极限值配置VO：<code>limitValue</code>
     */
    @ApiModelProperty(value = "前段极限值配置VO")
    private LimitValueVO limitValue;

    @ApiModelProperty(value = "宣教未读标识0无1有未读宣教")
    private Integer eduUnreadSign;

    @ApiModelProperty(value = "电子签名配置")
    private ESignConfigVO eSignConfigVO;

    @ApiModelProperty(value = "互联网医院名称")
    private String hospitalName;

    public String getHospitalOrgName() {
        return hospitalOrgName;
    }

    public void setHospitalOrgName(String hospitalOrgName) {
        this.hospitalOrgName = hospitalOrgName;
    }

    @ApiModelProperty(value = "实体医疗机构名")
    private String hospitalOrgName;

    @ApiModelProperty(value = "BJCA签名账号配置")
    private YwxAppConfigVO bjcaSignConfig;

    @ApiModelProperty(value = "腾讯云人脸识别账号配置")
    private TencentCloudConfigVO tencentCloudConfig;

    private String redMsg;
    private String greenMsg;
    private String defaultMsg;

    @ApiModelProperty(value = "初潮年龄")
    private List<Integer> menstrualFirstAgeList;
    @ApiModelProperty(value = "月经周期")
    private List<Integer> menstrualCycleList;
    @ApiModelProperty(value = "行经天数")
    private List<Integer> menstrualProcessDayList;
    @ApiModelProperty(value = "家庭史")
    private List<String> historyFamilyList;

    @ApiModelProperty(value = "服用方式列表")
    private List<String> usageMethodList;

    @ApiModelProperty(value = "治疗意见预置选项")
    private List<String> treatmentPresetOptions;

    public List<Integer> getConsultChargeList() {
        return consultChargeList;
    }

    public void setConsultChargeList(List<Integer> consultChargeList) {
        this.consultChargeList = consultChargeList;
    }

    /**
     * @return String 取得域 customerServPhone 的方法。
     */
    public String getCustomerServPhone() {
        return customerServPhone;
    }

    /**
     * @param customerServPhone 对域 customerServPhone 的设置方法.
     */
    public void setCustomerServPhone(String customerServPhone) {
        this.customerServPhone = customerServPhone;
    }

    /**
     * @return String 取得域 medicineEatTime 的方法。
     */
    public String getMedicineEatTime() {
        return medicineEatTime;
    }

    /**
     * @param medicineEatTime 对域 medicineEatTime 的设置方法.
     */
    public void setMedicineEatTime(String medicineEatTime) {
        this.medicineEatTime = medicineEatTime;
    }

    /**
     * @return String 取得域 medicineUnit 的方法。
     */
    public String getMedicineUnit() {
        return medicineUnit;
    }

    /**
     * @param medicineUnit 对域 medicineUnit 的设置方法.
     */
    public void setMedicineUnit(String medicineUnit) {
        this.medicineUnit = medicineUnit;
    }

    /**
     * @return String 取得域 medicineDirection 的方法。
     */
    public String getMedicineDirection() {
        return medicineDirection;
    }

    /**
     * @param medicineDirection 对域 medicineDirection 的设置方法.
     */
    public void setMedicineDirection(String medicineDirection) {
        this.medicineDirection = medicineDirection;
    }

    /**
     * @return List<String> 取得域 distrubList 的方法。
     */
    public List<String> getDistrubList() {
        return distrubList;
    }

    /**
     * @param distrubList 对域 distrubList 的设置方法.
     */
    public void setDistrubList(List<String> distrubList) {
        this.distrubList = distrubList;
    }

    /**
     * @return String 取得域 appSpreadTitle 的方法。
     */
    public String getAppSpreadTitle() {
        return appSpreadTitle;
    }

    /**
     * @param appSpreadTitle 对域 appSpreadTitle 的设置方法.
     */
    public void setAppSpreadTitle(String appSpreadTitle) {
        this.appSpreadTitle = appSpreadTitle;
    }

    /**
     * @return String 取得域 appSpreadDrContent 的方法。
     */
    public String getAppSpreadDrContent() {
        return appSpreadDrContent;
    }

    /**
     * @param appSpreadDrContent 对域 appSpreadDrContent 的设置方法.
     */
    public void setAppSpreadDrContent(String appSpreadDrContent) {
        this.appSpreadDrContent = appSpreadDrContent;
    }

    /**
     * @return String 取得域 appSpreadPtContent 的方法。
     */
    public String getAppSpreadPtContent() {
        return appSpreadPtContent;
    }

    /**
     * @param appSpreadPtContent 对域 appSpreadPtContent 的设置方法.
     */
    public void setAppSpreadPtContent(String appSpreadPtContent) {
        this.appSpreadPtContent = appSpreadPtContent;
    }

    /**
     * @return String 取得域 serverTime 的方法。
     */
    public String getServerTime() {
        return serverTime;
    }

    /**
     * @param serverTime 对域 serverTime 的设置方法.
     */
    public void setServerTime(String serverTime) {
        this.serverTime = serverTime;
    }

    /**
     * @return String 取得域 ptDisabledContent 的方法。
     */
    public String getPtDisabledContent() {
        return ptDisabledContent;
    }

    /**
     * @param ptDisabledContent 对域 ptDisabledContent 的设置方法.
     */
    public void setPtDisabledContent(String ptDisabledContent) {
        this.ptDisabledContent = ptDisabledContent;
    }

    /**
     * @return LimitValueVO 取得域 limitValue 的方法。
     */
    public LimitValueVO getLimitValue() {
        return limitValue;
    }

    /**
     * @param limitValue 对域 limitValue 的设置方法.
     */
    public void setLimitValue(LimitValueVO limitValue) {
        this.limitValue = limitValue;
    }

    public String getRedMsg() {
        return redMsg;
    }

    public void setRedMsg(String redMsg) {
        this.redMsg = redMsg;
    }

    public String getGreenMsg() {
        return greenMsg;
    }

    public void setGreenMsg(String greenMsg) {
        this.greenMsg = greenMsg;
    }

    public String getDefaultMsg() {
        return defaultMsg;
    }

    public void setDefaultMsg(String defaultMsg) {
        this.defaultMsg = defaultMsg;
    }

    public List<String> getMedicineUnitList() {
        return medicineUnitList;
    }

    public void setMedicineUnitList(List<String> medicineUnitList) {
        this.medicineUnitList = medicineUnitList;
    }

    public List<MedicineCycleVO> getMedicineCycleList() {
        return medicineCycleList;
    }

    public void setMedicineCycleList(List<MedicineCycleVO> medicineCycleList) {
        this.medicineCycleList = medicineCycleList;
    }

    public List<MedicineDateUnitVO> getMedicineDateUnitList() {
        return medicineDateUnitList;
    }

    public void setMedicineDateUnitList(List<MedicineDateUnitVO> medicineDateUnitList) {
        this.medicineDateUnitList = medicineDateUnitList;
    }

    public List<MedicineDosageVO> getMedicineDosageList() {
        return medicineDosageList;
    }

    public void setMedicineDosageList(List<MedicineDosageVO> medicineDosageList) {
        this.medicineDosageList = medicineDosageList;
    }

    public List<MedicineCustomDataUnitVO> getMedicineCustomDataUnitList() {
        return medicineCustomDataUnitList;
    }

    public void setMedicineCustomDataUnitList(List<MedicineCustomDataUnitVO> medicineCustomDataUnitList) {
        this.medicineCustomDataUnitList = medicineCustomDataUnitList;
    }

    public List<MedicineDateAndMethodVO> getMedicineDateAndMethodList() {
        return medicineDateAndMethodList;
    }

    public void setMedicineDateAndMethodList(List<MedicineDateAndMethodVO> medicineDateAndMethodList) {
        this.medicineDateAndMethodList = medicineDateAndMethodList;
    }

    public List<String> getMedicineTakeDateList() {
        return medicineTakeDateList;
    }

    public void setMedicineTakeDateList(List<String> medicineTakeDateList) {
        this.medicineTakeDateList = medicineTakeDateList;
    }

    public List<String> getMedicineTakeMethodList() {
        return medicineTakeMethodList;
    }

    public void setMedicineTakeMethodList(List<String> medicineTakeMethodList) {
        this.medicineTakeMethodList = medicineTakeMethodList;
    }

    public List<MedicineCycleUnitVO> getMedicineCycleDateUnitList() {
        return medicineCycleDateUnitList;
    }

    public void setMedicineCycleDateUnitList(List<MedicineCycleUnitVO> medicineCycleDateUnitList) {
        this.medicineCycleDateUnitList = medicineCycleDateUnitList;
    }

    public List<MedicineCustomCycleUnitVO> getMedicineCustomCycleUnitList() {
        return medicineCustomCycleUnitList;
    }

    public void setMedicineCustomCycleUnitList(List<MedicineCustomCycleUnitVO> medicineCustomCycleUnitList) {
        this.medicineCustomCycleUnitList = medicineCustomCycleUnitList;
    }

    public void initMedicationDefault() {
        // 用法用量
        this.setMedicineDateUnitList(MedicineDateUnitVO.toVOList());
        this.setMedicineDosageList(MedicineDosageVO.toVOList());
        this.setMedicineCustomDataUnitList(MedicineCustomDataUnitVO.toVOList());
        // 药品服用单位
        String unitList = ConfigUtil.getString("init.medicine.unitList");
        Arrays.asList(unitList.split(","));
        this.setMedicineUnitList(Arrays.asList(unitList.split(",")));
        // 服用方式和时间
        this.setMedicineDateAndMethodList(MedicineDateAndMethodVO.toVOList());
        // 服肜时间列表
        String dateList = ConfigUtil.getString("init.medicine.dateList");
        Arrays.asList(dateList.split(","));
        this.setMedicineTakeDateList(Arrays.asList(dateList.split(",")));
        // 服用方式列表
        String methodList = ConfigUtil.getString("init.medicine.methodList");
        Arrays.asList(methodList.split(","));
        this.setMedicineTakeMethodList(Arrays.asList(methodList.split(",")));

        // 用药周期
        this.setMedicineCycleDateUnitList(MedicineCycleUnitVO.toVOList());
        this.setMedicineCycleList(MedicineCycleVO.toVOList());
        this.setMedicineCustomCycleUnitList(MedicineCustomCycleUnitVO.toVOList());
    }
    public Integer getEduUnreadSign() {
        return eduUnreadSign;
    }

    public void setEduUnreadSign(Integer eduUnreadSign) {
        this.eduUnreadSign = eduUnreadSign;
    }

    public List<RecordPastVO> getPastList() {
        return pastList;
    }

    public ESignConfigVO geteSignConfigVO() {
        return eSignConfigVO;
    }

    public void seteSignConfigVO(ESignConfigVO eSignConfigVO) {
        this.eSignConfigVO = eSignConfigVO;
    }

    public void setPastList(List<RecordPastVO> pastList) {
        this.pastList = pastList;
    }

    public String getHospitalName() {
        return hospitalName;
    }

    public void setHospitalName(String hospitalName) {
        this.hospitalName = hospitalName;
    }

    public YwxAppConfigVO getBjcaSignConfig() {
        return bjcaSignConfig;
    }

    public void setBjcaSignConfig(YwxAppConfigVO bjcaSignConfig) {
        this.bjcaSignConfig = bjcaSignConfig;
    }

    public TencentCloudConfigVO getTencentCloudConfig() {
        return tencentCloudConfig;
    }

    public void setTencentCloudConfig(TencentCloudConfigVO tencentCloudConfig) {
        this.tencentCloudConfig = tencentCloudConfig;
    }

    public List<Integer> getMenstrualFirstAgeList() {
        return menstrualFirstAgeList;
    }

    public void setMenstrualFirstAgeList(List<Integer> menstrualFirstAgeList) {
        this.menstrualFirstAgeList = menstrualFirstAgeList;
    }

    public List<Integer> getMenstrualCycleList() {
        return menstrualCycleList;
    }

    public void setMenstrualCycleList(List<Integer> menstrualCycleList) {
        this.menstrualCycleList = menstrualCycleList;
    }

    public List<Integer> getMenstrualProcessDayList() {
        return menstrualProcessDayList;
    }

    public void setMenstrualProcessDayList(List<Integer> menstrualProcessDayList) {
        this.menstrualProcessDayList = menstrualProcessDayList;
    }

    public List<String> getHistoryFamilyList() {
        return historyFamilyList;
    }

    public void setHistoryFamilyList(List<String> historyFamilyList) {
        this.historyFamilyList = historyFamilyList;
    }

    public List<String> getUsageMethodList() {
        return usageMethodList;
    }

    public void setUsageMethodList(List<String> usageMethodList) {
        this.usageMethodList = usageMethodList;
    }

    public List<String> getTreatmentPresetOptions() {
        return treatmentPresetOptions;
    }

    public void setTreatmentPresetOptions(List<String> treatmentPresetOptions) {
        this.treatmentPresetOptions = treatmentPresetOptions;
    }
}
